﻿using System;
using System.Collections.Generic;

namespace Borg.Framework.CompositionBinding
{
    public interface ICompositionBehavior<T>
    {
        event EventHandler<ItemEventArgs<T>> ItemAdded;
        event EventHandler<ItemEventArgs<T>> ItemRemoved;

        event EventHandler<ItemEventArgs<T>> ItemComposed;
        event EventHandler<ItemEventArgs<T>> ItemDecomposed;

        void Compose(T item);
        void Decompose(T item);

        IEnumerable<T> ComposedItems { get; }
        IEnumerable<T> Items { get; }
        SlotInfo Slot { get; set; }
    }
}

